package com.zyf.concurrency.chapter16;

/**
 * 延长初始化占位类模式
 * 引自原文：
 *      程序清单16-6的“延迟初始化占位(Holder) 类模式”[EJ Item 48]中使用了一个专门的类
 * 来初始化Resource。JVM将推迟ResourceHolder的初始化操作，直到开始使用这个类时才初
 * 始化[ JLS 12.4.1]，并且由于通过一个静态初始化来初始化Resource,因此不需要额外的同步。
 * 当任何一个线程第一次调用getResource时，都会使ResourceHolder被加载和被初始化，此时
 * 静态初始化器将执行Resource的初始化操作。
 * create by yifeng
 */
public class ResourceFactory {
    private static class ResourceHolder {
        public static Resource resource = new Resource();
    }

    public static Resource getResource() {
        return ResourceHolder.resource;
    }

    static class Resource {}
}
